package com.personal.utils;

/**
 * @author 萌新
 * @version 1.0
 * @date 2021/4/13 22:03
 */

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;

/**
 * 文件工具类
 */
public class FileUtil {

    private static final Logger logger = LoggerFactory.getLogger(FileUtil.class);

    /** 路径分隔符. 在 类UNIX系统上为 '/',在 windows 系统上，它为 '\' */
    private static String seperator = System.getProperty("file.separator");

    /**
     * 根据不同的操作系统,获取图片的存放路径
     * @return
     */
    public static String getImgBasePath() {
        String os = System.getProperty("os.name");
        logger.debug("os.name: {}", os);
        String basePath = "";
        if (os.toLowerCase().startsWith("win")) {
            basePath = "D:/newO2O/image";
        } else {
            basePath = "/home/artisan/o2o/image";
        }
        // 根据操作系统的不同，使用当前操作系统的路径分隔符替换掉，我们写的basePath中的路径分隔符，当然了也可以在basePath赋值的时候直接使用seperator
        basePath = basePath.replace("/", seperator);
        logger.debug("basePath: {}", basePath);
        return basePath;
    }

    /**
     * 获取特定商铺的图片的路径,根据shopId来区分。理应配置到数据库配置表中或者配置文件中。
     * 约定每个店铺下的图片分别存放在对应的店铺id下
     * 图片存储的相对路径.图片最终存储的位置需要加上getImgBasePath方法返回的basePath
     * 数据库tb_shop中的shop_img字段存储的是该相对路径，即该方法的返回值
     * @param shopId
     * @return
     */
    public static String getShopImagePath(long shopId) {
        String shopImgPath = "/upload/item/shopImage/" + shopId + "/";
        shopImgPath = shopImgPath.replace("/", seperator);
        logger.debug("shopImgPath: {}", shopImgPath);
        return shopImgPath;
    }

    /**
     * 水印文件的位置。理应配置到数据库配置表中或者配置文件中。
     * @return
     */
    public static File getWaterMarkFile() {
        String basePath = FileUtil.getImgBasePath();
        String waterMarkImg = basePath + "/watermark/water.png";
        waterMarkImg = waterMarkImg.replace("/", seperator);
        logger.debug("waterMarkImg path: {}", waterMarkImg);
        return new File(waterMarkImg);
    }

}
